package alo.p6.work;

import alo.p6.BinaryTreeNode;

import java.util.LinkedList;
import java.util.Queue;

//二叉树插入
//使用层序遍历，找到一个结点的左孩子或右孩子为空，把该数插入在此
public class InsertInBinaryTree {
    void insertInBinaryTree(BinaryTreeNode root,int data){
        Queue<BinaryTreeNode> queue=new LinkedList<>();
        BinaryTreeNode temp;
        BinaryTreeNode node=new BinaryTreeNode();
        node.setData(data);
        node.setLeft(null);
        node.setRight(null);
        if (node==null){
            System.out.println("Memory Error");
            return;
        }
        if (root==null){
            root=node;
            return;
        }
        queue.offer(root);
        while (!queue.isEmpty()){
            temp=queue.poll();
            if (temp.getLeft()!=null){
                queue.offer(temp.getLeft());
            }else{
                temp.setLeft(node);
                return;
            }
            if (temp.getRight()!=null){
                queue.offer(temp.getRight());
            }else {
                temp.setRight(node);
                queue.clear();
                return;
            }
        }
    }
}
